package com.gethb.pub.utils;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.servlet.http.HttpServletRequest;

import com.gethb.prod.service.IUserLoginService;
import com.gethb.prod.vo.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;

public class ToolsUtils {

//    private static final Logger LOG = LoggerFactory.getLogger(ToolsUtils.class);

//	/**
//	 * 通过request转换为json
//	 * @param request
//	 * @return
//	 */
//	public static String getXmlFromHeader(HttpServletRequest request) {
//		String param= null;
//        try {
//            BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
//            StringBuilder responseStrBuilder = new StringBuilder();
//            String inputStr;
//            while ((inputStr = streamReader.readLine()) != null)
//                responseStrBuilder.append(inputStr);
//
//            JSONObject jsonObject = JSONObject.parseObject(responseStrBuilder.toString());
//            param= jsonObject.toJSONString();
//            LOG.info(param);
//        } catch (Exception e) {
//        	LOG.error("request转换Json错误！");
//            e.printStackTrace();
//        }
//        return param;
//	}

    /**
     * 生成短信ID
     * 规则：UC+日期+5位递增
     */

    public static String getMessageId(String num) {
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
        String date = df.format(new Date());
        int i = Integer.valueOf(num).intValue();
        String messageId = "UC" + date + String.format("%05d", i + 1);
        return messageId;

    }

    /**
     * 生成会员ID
     * 规则：VIP+手机号后4位+5位递增
     */

    public static String getUserId(String mblphNo, int userSum) {
        if (99999 == userSum) {
            userSum = 00000;
        }
        String num = mblphNo.substring(7, 11);
        String userId = "VIP" + num + String.format("%05d", userSum + 1);
        return userId;

    }

//	/**
//	 * 获取当前日期
//	 * 格式：yyyyMMddHH
//	 * @return
//	 */
//	public static String getOprgdayPrd() {
//		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
//		return df.format(new Date());
//	}
//
//	/**
//	 * 返回加X月后的日期
//	 * @param date
//	 * @param i
//	 * @return yyyyMMdd
//	 */
//	public static String addMont(String date, int i) {
//		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
//		GregorianCalendar calendar = new GregorianCalendar(Integer
//				.parseInt(date.substring(0, 4)), Integer
//				.parseInt(date.substring(4, 6)) - 1, Integer
//				.parseInt(date.substring(6, 8)));
//		calendar.add(GregorianCalendar.MONTH, i);
//		return df.format(calendar.getTime());
//	}
//
//	/**
//	 * 返回加X月后的日期
//	 * @param date
//	 * @param i
//	 * @return yyyy-MM-dd HH:mm:ss
//	 */
//	public static String addMont1(String date, int i) {
//		LOG.info("间隔为"+i);
//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
//		GregorianCalendar calendar = new GregorianCalendar(Integer
//				.parseInt(date.substring(0, 4)), Integer
//				.parseInt(date.substring(6, 7)) - 1, Integer
//				.parseInt(date.substring(8, 10)));
//		calendar.add(GregorianCalendar.MONTH, i);
//		return df.format(calendar.getTime());
//	}
//
//	/**
//	 * 比较两个日期相差的天数，第一个日期要比第二个日期要晚
//	 * @param date1
//	 * @param date2
//	 * @return
//	 */
//	public static int getMargin(String date1, String date2) {
//		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
//		int margin;
//		ParsePosition pos = new ParsePosition(0);
//		ParsePosition pos1 = new ParsePosition(0);
//		Date dt1 = df.parse(date1, pos);
//		Date dt2 = df.parse(date2, pos1);
//		long l = dt1.getTime() - dt2.getTime();
//		margin = (int) (l/ (24 * 60 * 60 * 1000));
//		LOG.info("日期相差" + margin + "天");
//		return margin;
//	}

//	public static String getTime(String scope) {
//		LOG.info("非月计算");
//		long time = 0;
//		String date = null;
//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
//		if (scope.substring(scope.length()-1).toLowerCase().equals("m")) {
//			LOG.info("分钟计算");
//			time = Long.valueOf(scope.substring(0, scope.length()-1))*60*1000;
//		}
//		if (scope.substring(scope.length()-1).toLowerCase().equals("h")) {
//			LOG.info("小时计算");
//			time = Long.valueOf(scope.substring(0, scope.length()-1))*60*60*1000;
//		}
//		if (scope.substring(scope.length()-1).toLowerCase().equals("d")) {
//			LOG.info("天计算");
//			time = Long.valueOf(scope.substring(0, scope.length()-1))*24*60*60*1000;
//		}
//		if (scope.substring(scope.length()-1).toLowerCase().equals("w")) {
//			LOG.info("周计算");
//			time = Long.valueOf(scope.substring(0, scope.length()-1))*7*24*60*60*1000;
//		}
//		Long now = new Date().getTime();
//		Date beforeDate = new Date(now - time);
//		date = df.format(beforeDate);
//		return date;
//	}


    public static String getUserId(IUserLoginService iUserLoginService, HttpServletRequest request) {
        try {
            return iUserLoginService.verifyToken(request.getHeader("token"));
        } catch (Exception error) {
            return null;
        }
    }
}
